/*
 * This file is part of b.AMP.
 * 
 * b.AMP is free software: you can redistribute it and/or modify it under 
 * the terms of the GNU Lesser General Public License as published by the 
 * Free Software Foundation, either version 3 of the License, or (at your 
 * option) any later version.
 * 
 * b.AMP is distributed in the hope that it will be useful, but WITHOUT ANY
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or 
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU lesser General Public 
 * License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public License
 * along with b.AMP.  If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef __DECODER_TEST_HPP__
#define __DECODER_TEST_HPP__

#include <bamp/decoder_ptr.hpp>
#include <bamp/noncopyable.hpp>

class DecoderTest : public bamp::Decoder, bamp::Noncopyable
{
public:
    DecoderTest();
    ~DecoderTest();

    BAMP_DECODER_DEFINE_CLONE_NOT_IMPLEMENTED;

    bamp::MessagePtr getMetadata() const;
    void setHost(bamp::HostPtr host);
    void send(bamp::MessagePtr msg);
    void setInput(bamp::DataWriterPtr input);
    bamp::Format getInFormat(size_t chan);
    size_t getPosition() const;
    void setPosition(size_t position);
    bool getSeekable() const;
    size_t getChannels() const;
    bamp::Format getOutFormat(size_t chan);
    bamp::Status read(size_t chan, char* dst, size_t& size);
};

#endif // __DECODER_TEST_HPP__
